package com.mdc.mansion.common.util.log;

import com.mdc.mansion.common.context.AppContext;
import com.mdc.mansion.common.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Date;

public abstract class LoggerAspect {
	
	protected final Logger logger=LoggerFactory.getLogger(this.getClass());
	
	/**
	 * info日志
	 * @param descrip  描述
	 */
	public void loggerInfo(String... descrip) {
		String seq= AppContext.getRequestSeq();
		LoggerUtil.loggerInfo(logger,new Date(), 0, StringUtils.join(descrip, "|"), seq, null, null, null);
	}
	/**
	 * info日志
	 * @param access 访问时间
	 * @param time 执行的时间长短
	 * @param descrip  描述
	 * @param rsp 返回数据
	 * @param req 请求参数
	 */
	public void loggerInfo(Date access, long time,String descrip,Object rsp,Object ...req) {
		String seq=AppContext.getRequestSeq();
		LoggerUtil.loggerInfo(logger,access, time, descrip, seq, null, rsp, req);
	}
	
	/**
	 * 错误日志
	 * @param descrip
	 * @param t 异常错误
	 */
	public void loggerError(Throwable t, String... descrip) {
		String seq=AppContext.getRequestSeq();
		LoggerUtil.loggerError(logger,new Date(), 0, StringUtils.join(descrip, "|"), seq, t, null, null, null);
	}

	/**
	 * 错误日志
	 * @param t
	 * @param req
	 */
	public void loggerError(Throwable t, Object req) {
		String seq=AppContext.getRequestSeq();
		LoggerUtil.loggerError(logger,new Date(), 0, null, seq, t, null, req);
	}
	
	/**
	 * 错误日志
	 * @param t 异常错误
	 * @param rsp 结果返回结果
	 * @param descrip
	 */
	public void loggerError(Throwable t,Object rsp, String... descrip) {
		String seq=AppContext.getRequestSeq();
		LoggerUtil.loggerError(logger,new Date(), 0, StringUtils.join(descrip, "|"), seq, t, rsp, null, null);
	}
	
	/**
	 * 错误日志
	 * @param access
	 * @param time
	 * @param descrip
	 * @param t 异常错误
	 * @param rsp
	 * @param req
	 */
	public void loggerError(Date access, long time,String descrip,Throwable t,Object rsp, Object ...req) {
		String seq=AppContext.getRequestSeq();
		LoggerUtil.loggerError(logger,access, time, descrip, seq, t, rsp, req);
	}
	
	/**
	 * debug信息
	 * @param access
	 * @param descrip
	 */
	public void loggerDebug(Date access, String descrip) {
		String seq=AppContext.getRequestSeq();
		LoggerUtil.loggerDebug(logger, access, descrip, seq);
	}
}
